Time keeping in computing systems requires information for synchronizing the time with a world time keeping standard and a mechanism for accurately maintaining the current time between synchronizations. Synchronization can be either an automated or manual process. The most basic manual process is the input of a current time or date by a user. This methodology requires that the user have access to accurate time and be capable of inputting this time accurately. A user may utilize time kept by another computing device or clock in their house or work place, where the accuracy of this time cannot be confirmed.
If a computing device has access to a network or similar communication medium, then it can be configured to synchronize automatically by communicating with a time keeping source. Most time keeping sources are maintaining and possibly broadcasting a time that is a standardized time such as International Atomic Time (TAI) or Universal Coordinated Time (UTC). These standardized times are well established standards for time keeping that are in wide use and each standard uses a precise methodology for determining the current time. The computing device can contact a server or listen for a broadcast of the current time according to one of these standards. As used herein, these standardized times are referred to as “world time standards” and a current value of one of these standards including a time and/or date is referred to as an “accurate time.”
Once the accurate time is received by the computing device, the time keeping mechanism must be able to accurately maintain the time until a next synchronization, which in the case of a manual synchronization can be a significant amount of time. Most computing devices use oscillator circuits that update the time in fixed increments based on the frequency of the oscillation of the oscillator circuit. Oscillators vary widely, but provide reasonably accurate mechanisms for updating the time maintained by a computing device, but by themselves provide no mechanism for obtaining an accurate time or verifying that the value maintained by the computing device is accurate.